package cn.itheima.data_simulator.base;

import cn.itheima.data_simulator.util.ConfigReader;
import javafx.util.Pair;

import java.sql.*;
import java.util.Random;

public abstract class DBSimulator implements Simulator {
    public static Connection conn;
    public static final String driver = ConfigReader.mysql_driver;
    public static final String url = "jdbc:mysql://" + ConfigReader.mysql_server
            + ":" + ConfigReader.mysql_port
            + "/" + ConfigReader.mysql_database
            + "?useSSL=false&characterEncoding=UTF-8";
    public static final String user = ConfigReader.mysql_username;
    public static final String password = ConfigReader.mysql_password;
    public PreparedStatement ps;
    public Statement statement = null;
    public ResultSet rs = null;

    static {
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public Pair<String, String> getInputLine() throws SQLException {
        return null;
    }

    //获取ip
    public String getIp() {
        // ip范围
        int[][] range = {{607649792, 608174079}, // 36.56.0.0-36.63.255.255
                {1038614528, 1039007743}, // 61.232.0.0-61.237.255.255
                {1783627776, 1784676351}, // 106.80.0.0-106.95.255.255
                {2035023872, 2035154943}, // 121.76.0.0-121.77.255.255
                {2078801920, 2079064063}, // 123.232.0.0-123.235.255.255
                {-1950089216, -1948778497}, // 139.196.0.0-139.215.255.255
                {-1425539072, -1425014785}, // 171.8.0.0-171.15.255.255
                {-1236271104, -1235419137}, // 182.80.0.0-182.92.255.255
                {-770113536, -768606209}, // 210.25.0.0-210.47.255.255
                {-569376768, -564133889}, // 222.16.0.0-222.95.255.255
        };

        Random rdint = new Random();
        int index = rdint.nextInt(10);
        String ip = num2ip(range[index][0] + new Random().nextInt(range[index][1] - range[index][0]));
        return ip;
    }

    /*
     * 将十进制转换成IP地址
     */
    public String num2ip(int ip) {
        int[] b = new int[4];
        String x = "";
        b[0] = (int) ((ip >> 24) & 0xff);
        b[1] = (int) ((ip >> 16) & 0xff);
        b[2] = (int) ((ip >> 8) & 0xff);
        b[3] = (int) (ip & 0xff);
        x = Integer.toString(b[0]) + "." + Integer.toString(b[1]) + "." + Integer.toString(b[2]) + "." + Integer.toString(b[3]);
        return x;
    }
}
